// manager/pages/clock/index.js
import config from '../../../utils/config';
import { request, uploadFile } from '../../../utils/request';
import WxValidate from '../../../common/WxValidate';
import util from '../../../common/util'
Page({

    /**
     * 页面的初始数据
     */
    data: {
        baseUrl: config.baseUrl,
        dateText: '',
        latitude: '',
        longitude: '',
        form: {
            checkingType: '', // 1:营销打卡   2:包保打卡
            location: '', // 打卡地点
            imageFile: '', // 打卡图片
            memo: '', // 备注说明
            orgId: '', // 打卡机构
        }
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        let form = {
            checkingType: options.type,
            location: options.address,
            imageFile: '',
            memo: '',
            orgId: options.orgId?options.orgId:'',
        }
        this.setData({
            form,
            latitude: options.latitude,
            longitude: options.longitude,
        })
        wx.setNavigationBarTitle({
            title: options.orgName?options.orgName:options.typeLabel
        })
        this.initValidate();
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {
        this.getDateText();
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },
    /**
     * 输入框输入时
     */
    input(e){
        let key = e.target.dataset.key;
        this.setData({
            ['form.'+key]: e.detail.value
        })
    },

    /**
     * 打卡时间
     */
    getDateText(){
        let date = new Date();
        this.setData({
            dateText: util.formatTime(date)
        });
        setTimeout(() => {
            this.getDateText();
        },1000);
    },

    /**
     * 上传打卡图片
     */
    uploadQR(e){
        let that = this;
        wx.chooseImage({
            count: 1, // 默认9
            sizeType: ['compressed'], // 可以指定是原图还是压缩图，默认二者都有
            sourceType: ['camera'], // 可以指定来源是相册还是相机，默认二者都有
            success(res) {
                wx.compressImage({
                    src: res.tempFilePaths[0], // 图片路径
                    quality: 50, // 压缩质量，范围0～100，数值越小，质量越低，压缩率越高（仅对jpg有效）
                    success(res1) {
                        that.setData({
                            'form.imageFile': res1.tempFilePath
                        })
                    }
                })
                
            }
        })
    },

    /**
     * 打卡
     */
    submit(e){
        // 传入表单数据，调用验证方法
        if (!this.WxValidate.checkForm(this.data.form)) {
            const error = this.WxValidate.errorList[0]
            this.showModal(error)
            return false
        }
        let { latitude, longitude } = this.data;
        uploadFile({
            url: "/punchIn/addPunchPoint",
            beforeTitle: "正在加载中...",
            afterTitle: "打卡成功",
            filePath: this.data.form.imageFile,
            name: "imageFile",
            formData: {
                coordinate: `${latitude},${longitude}`,
                checkingType: this.data.form.checkingType,
                location: this.data.form.location,
                memo: this.data.form.memo,
                orgId: this.data.form.orgId
            }
        }).then(res => {
            if(res.code == 0){
                wx.navigateBack({
                    delta: Number(this.data.form.checkingType)+1
                })
                // wx.navigateTo({
                //   url: `/manager/pages/clockrecord/index?type=${this.data.form.checkingType}`,
                // })
            }
        }).catch(error => {
            // console.log(error)
        })
    },
    // 表单验证
    initValidate() {
        // 验证字段的规则
        const rules = {
            imageFile: {
                required: true
            }
        }
        // 验证字段的提示信息，若不传则调用默认的信息
        const messages = {
            imageFile: {
                required: '请上传照片'
            }
        }
        // 创建实例对象
        this.WxValidate = new WxValidate(rules, messages)        
    },
    showModal(error) {
        wx.showToast({
            title: error.msg,
            icon: 'none',
            duration: 2000
        })
    },
})